package 剑指offer;

import java.util.Scanner;

/** 

* @author ：soulstones
* @version ：2019年9月30日 下午10:01:35 
* @Description：
* 
写一个函数，求两个整数之和，要求在函数体内不得使用+、-、*、/四则运算符号。
*/
public class A48不用加减乘除做加法 {

	//位运算
	
	//1 两个数异或： ^ 		相当于每一位相加，而不考虑进位；
	//2 两个数相与，	&		并左移一位：相当于求得进位；
	//3 将上述两步的结果相加
	 public static int Add(int num1,int num2) {
			  while (num2!=0) {
			             int temp = num1^num2;
			             num2 = (num1&num2)<<1;
			             num1 = temp;
			         }
			         return num1;
	    }
	 
	 
	 //递归版本
	 public static int Add11(int num1,int num2) {
		 if(num2==0)
	            return num1;
	        return Add11(num1^num2, (num1&num2)<<1);
   }
	 public static void main(String[] args) {
		 Scanner scanner = new Scanner(System.in);
			int n = scanner.nextInt();
			int m = scanner.nextInt();
			System.out.println(Add(n, m));
			System.out.println(Add11(n, m));
	}
}
